package com.yxq.dao;

import cn.hutool.crypto.SecureUtil;
import com.yxq.util.DbUtilHikari;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

/**
 * 对用户表的操作：注册用户、删除用户、查询用户、修改用户
 * @author yxq
 * @version 1.0
 * @classname UserDao
 * @date 2022/12/31 10:35
 */
public class UserDao {
    /**
     * 用户注册
     * @param uname 用户名
     * @param upsw 密码
     * @return 注册成功返回 1，否则返回 0
     */
    public int insertUser(String uname, String upsw) {
        // 1. 声明一些变量备用
        // 代表数据库连接
        Connection conn = null;

        // 预编译对象，用 pstmt 执行 sql 语句
        PreparedStatement pstmt = null;

        // 注册成功与否的标志，如果是 0 注册失败；如果是 1 注册成功
        int flag = 0;

        // 2. 获取连接
        conn = DbUtilHikari.getConnection();

        // 3. 定义并准备 SQL 语句
        String sql = "INSERT INTO users(username, userpsw) VALUES(?, ?)";

        try {
            pstmt = conn.prepareStatement(sql);

            // 4. 形参赋值
            pstmt.setString(1, uname);
            pstmt.setString(2, SecureUtil.md5(upsw));

            // 5. 执行 SQL 语句
            flag = pstmt.executeUpdate();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            // 6. 关闭数据库资源
            DbUtilHikari.close(pstmt, conn);
        }

        return flag;
    }
}
